tg-me.com/pyproglib/6736
Last Update:
📐 Новый модуль imath в Python: математика для целых чисел
На протяжении многих лет модуль math
в Python становился все более перегруженным. Он начинался как обёртка над C-стандартом математических функций (в основном — с плавающей точкой), но со временем туда добавили и функции, не имеющие к нему отношения: math.gcd()
, math.factorial()
, math.isqrt()
и другие.
Это породило путаницу:
— В документации math
указано, что функции возвращают float
, но это не так для math.gcd()
или math.factorial()
.
— Невозможно чётко описать, какие типы аргументов принимает каждая функция.
— Сложнее разобраться, где искать нужные функции: целочисленные, статистические, комплексные — все перемешаны.
Создать новый модуль imath
, в котором будут собраны функции, работающие строго с целыми числами. Все возвращаемые значения — тоже целые (int
).
Вот список функций, которые переедут из math
в imath
:comb()
— число сочетанийfactorial()
— факториалgcd()
— наибольший общий делительisqrt()
— целочисленный квадратный кореньlcm()
— наименьшее общее кратноеperm()
— число размещений
Их аналоги в math
сохранятся, но будут мягко устаревшими (soft deprecated) — они останутся в коде, но будут помечены как нежелательные к использованию.
В PEP пока не входят новые функции, но обсуждается возможное расширение: число Делануа, тесты на простоту и другие инструменты теории чисел.
📌 Вывод: imath
— это шаг к более чистой архитектуре стандартной библиотеки. Целые числа заслужили свой модуль.
Что думаете? Стоит ли Python разделять модули дальше по специализации?
🔗 Подробнее в PEP 791: https://clc.to/POzTkw
Библиотека питониста #свежак